package cn.jiyun.function.controller;

import cn.jiyun.Result.Result;
import cn.jiyun.function.service.BackstageCarService;
import cn.jiyun.pojo.BackstageCar;
import com.github.pagehelper.PageInfo;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.time.LocalDateTime;

@RestController
@RequestMapping("backstageCar")
@Slf4j
public class BackstageCarController {
    @Autowired
    private BackstageCarService backstageCarService;
    /**
     * 根据分页参数和车辆条件查询后台车辆信息
     *
     * @param pageNum 页码，默认为1，表示查询第一页数据
     * @param pageSize 每页记录数，默认为10，表示每页查询10条记录
     * @param brokerCar 包含查询条件的后台车辆对象，用于指定查询的车辆特性
     * @return 返回包含分页车辆信息的结果对象
     */
    @PostMapping("findPage")
    public Result findPage(@RequestParam(name="pageNum" ,defaultValue = "1")Integer pageNum,
                          @RequestParam(name="pageSize",defaultValue = "10") Integer pageSize,
                          @RequestBody BackstageCar brokerCar
    ) {
        // 调用服务层方法，根据页码、每页记录数和查询条件获取分页车辆信息
        PageInfo<BackstageCar> page = backstageCarService.findPage(pageNum,pageSize,brokerCar);
        // 返回成功结果，包含分页车辆信息
        return Result.ok(page);
    }
    /**
     * 插入或更新活动信息
     *
     * 该方法用于处理POST请求，以插入或更新数据库中的活动信息具体执行的操作取决于
     * BackstageCar对象中是否包含了ID如果ID为空，则插入新记录；如果ID存在，则更新现有记录
     *
     * @param backstageCar 包含活动信息的BackstageCar对象，用于插入或更新数据库
     * @return 返回操作结果，表示操作成功
     */
    @PostMapping("insertHuodong")
    public Result insertHuodong(@RequestBody BackstageCar backstageCar) {
        // 检查BackstageCar对象的ID是否为空，以决定是插入新记录还是更新现有记录
        if (backstageCar.getId() == null){
            // 如果ID为空，设置最终时间当前时间，并调用insertHuodong方法插入新记录
            backstageCar.setFinallyTime(LocalDateTime.now());
            backstageCarService.insertHuodong(backstageCar);
        }else{
            // 如果ID不为空，同样更新最终时间当前时间，但调用updateBack方法更新现有记录
            backstageCar.setFinallyTime(LocalDateTime.now());
            backstageCarService.updateBack(backstageCar);
        }

        // 记录日志，输出BackstageCar对象的信息，用于调试和审计目的
        log.info("======================backstageCar:{}",backstageCar);
        // 返回操作结果，表示操作成功
        return Result.ok();
    }
    /**
     * 处理跳转到更新页面的请求
     * 此方法用于根据汽车的ID获取汽车对象，以便在前端页面上显示并进行更新操作
     * 使用@PostMapping注解表明该方法仅响应POST方式的请求
     *
     * @param id 汽车的唯一标识符，用于查找特定的汽车对象
     * @return 返回一个Result对象，其中包含查找的汽车对象，用于传递给前端页面
     */
    @PostMapping("toUpdate")
    public Result toUpdate(Integer id) {
        // 根据提供的汽车ID调用服务方法查找汽车对象
        BackstageCar backstageCar = backstageCarService.findById(id);
        // 返回包含找到的汽车对象的Result对象，表示操作成功
        return Result.ok(backstageCar);
    }
}
